package es.ats.codington.festival.services;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import es.ats.codington.festival.domain.Visitor;
import es.ats.codington.festival.daos.DAOManager;
import es.ats.codington.festival.daos.EventSignUpDAOImpl;
import es.ats.codington.festival.daos.VisitorDAOImpl;
import es.ats.codington.festival.exceptions.DAOSExceptions;
import es.ats.codington.festival.interfaces.daos.iEventSignUpDAO;
import es.ats.codington.festival.interfaces.daos.iVisitorDAO;
import es.ats.codington.festival.interfaces.services.iLoginVisitor;
import es.ats.codington.festival.interfaces.services.iSignUpEvent;
import es.ats.codington.festival.interfaces.services.iUpdatePass;
import es.ats.codington.festival.interfaces.services.iUpdateVisitor;
import es.ats.codington.festival.interfaces.services.iVisitorRegister;
import es.ats.codington.festival.utils.FERSDataConnection.FersDC;


/**
 * The Class VisitorService.
 *
 * @author CODINGTONPOJO
 */
public class VisitorService implements iLoginVisitor, iSignUpEvent, iUpdatePass, iUpdateVisitor, iVisitorRegister {

	/** The visitor dao. */
	private iVisitorDAO visitorDAO;
	
	/** The signup dao. */
	private iEventSignUpDAO signupDAO;

	/**
	 * Instantiates a new visitor service.
	 */
	public VisitorService(){
		ApplicationContext ctx = new ClassPathXmlApplicationContext(  "beans.xml");  
		DAOManager daoManager = (DAOManager) ctx.getBean("daoManager");
		this.visitorDAO = daoManager.getVisitorDAOImpl();
		this.signupDAO = daoManager.getEventSignUpDAO();
	}
	
	

	
	

	/* (non-Javadoc)
	 * @see es.ats.codington.festival.interfaces.services.iVisitorRegister#registerVisitor(es.ats.codington.festival.domain.Visitor)
	 */
	@Override
	
	public boolean registerVisitor(Visitor visitante1) throws Exception {
		boolean reg=false;
	
		reg=visitorDAO.insertVisitor(visitante1);
		
		
	return reg;
	}

	
	/* (non-Javadoc)
	 * @see es.ats.codington.festival.interfaces.services.iLoginVisitor#loginVisitor(es.ats.codington.festival.domain.Visitor)
	 */
	@Override
	public int loginVisitor(Visitor visitor2) throws Exception {
		int idvisitor=0;

			idvisitor=visitorDAO.loginVisitor(visitor2);
			
		return idvisitor;
	}
		
	
	/* (non-Javadoc)
	 * @see es.ats.codington.festival.interfaces.services.iUpdateVisitor#updateVisitor(es.ats.codington.festival.domain.Visitor, int)
	 */
	@Override
	public boolean updateVisitor(Visitor visitante1, int i) throws Exception {
		boolean update=false;
		
			update=visitorDAO.updateVisitor(visitante1, i);

			
		return update;
	}

	/* (non-Javadoc)
	 * @see es.ats.codington.festival.interfaces.services.iUpdatePass#updatePassword(es.ats.codington.festival.domain.Visitor, java.lang.String, int)
	 */
	@Override
	public boolean updatePassword(Visitor visitante4, String newpassword, int i) throws Exception {
		
		boolean updpas=false;

			updpas=visitorDAO.updatePass(visitante4, newpassword ,i);
						
		return updpas;
	}

	/* (non-Javadoc)
	 * @see es.ats.codington.festival.interfaces.services.iSignUpEvent#signUpEvent(int, int)
	 */
	@Override
	public boolean signUpEvent(int idvisitor, int idevent) throws Exception {
		
		boolean signup=false;
		
			signup=signupDAO.signUpToEvent(idvisitor , idevent);

		return signup;

	}

	/* (non-Javadoc)
	 * @see es.ats.codington.festival.interfaces.services.iSignUpEvent#unsignUpEvent(int, int)
	 */
	@Override
	public boolean unsignUpEvent(int idvisitor, int idevent) throws Exception {
		
		boolean unsignup=false;
		
		unsignup=signupDAO.unsignUpToEvent(idvisitor , idevent);

		return unsignup;
	}

}
